home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
A-COMAL Series
/
(k)aar.d64
/
func.value
< prev
next >
Wrap
Text File
|
2009-01-31
|
1KB
|
47 lines
9000 //
9010 FUNC VALUE(NUMBER$) CLOSED
9020 DIM NUM$ OF LEN(NUMBER$)+1
9030 SIGN:=1; PTR:=1; V:=0; E:=0
9040 NUM$:=NUMBER$+"!"
9050 WHILE NUM$(PTR:PTR)=" " DO PTR:+1
9060 IF NUM$(PTR:PTR)="-" THEN
9070 SIGN:=-1; PTR:+1
9080 ELIF NUM$(PTR:PTR)="+" THEN
9090 PTR:+1
9100 ENDIF
9110 WHILE DIGIT DO
9120 V:=V*10+ORD(NUM$(PTR:PTR))-ORD("0")
9130 PTR:+1
9140 ENDWHILE
9150 IF NUM$(PTR:PTR)="." THEN
9160 PTR:+1
9170 WHILE DIGIT DO
9180 V:=V*10+ORD(NUM$(PTR:PTR))-ORD("0")
9190 PTR:+1; E:-1
9200 ENDWHILE
9210 ENDIF
9220 IF NUM$(PTR:PTR) IN "E┼" THEN
9230 PTR:+1; E2:=0; E2S:=1
9240 IF NUM$(PTR:PTR)="-" THEN
9250 E2S:=-1; PTR:+1
9260 ELIF NUM$(PTR:PTR)="+" THEN
9270 E2S:=1; PTR:+1
9280 ENDIF
9290 WHILE DIGIT DO
9300 E2:=E2*10+ORD(NUM$(PTR:PTR))-ORD("0")
9310 PTR:+1
9320 ENDWHILE
9330 E:+E2*E2S
9340 ENDIF
9350 IF E>0 THEN
9360 FOR X:=1 TO E DO V:=V*10
9370 ELIF E<0 THEN
9380 FOR X:=-1 TO E STEP -1 DO V:=V/10
9390 ENDIF
9400 RETURN SIGN*V
9410 //
9420 FUNC DIGIT
9430 RETURN NUM$(PTR:PTR) IN "0123456789"
9440 ENDFUNC DIGIT
9450 ENDFUNC VALUE